package com.gtw.proxy;

/**
 * 优点:
 *      1.职责清晰:真实角色实现具体业务逻辑,不关心非本职工作
 *      2.能够协调调用者和被调用者，在一定程度上降低了系统的耦合度
 * 缺点:
 *      1.有些类型的代理模式可能会造成请求的处理速度变慢
 *      2.实现代理模式需要额外的工作，有些代理模式的实现非常复杂
 * 使用场景:
 *      SpringAop是一个典型的动态代理
 */
public class Proxy implements Subject{
    private Subject subject = null;

    public Proxy(Subject subject) {
        this.subject = subject;
    }

    public void request() {
        System.out.println("代理前面干的事。。。");
        subject.request();
        System.out.println("代理后面干的事。。。");
    }

    public Subject getProxy() {
        return this;
    }
}
